The present disclosure relates to a method of, and apparatus for, testing computer hardware and software configurations. More particularly, the present disclosure relates to a method of, and apparatus for, testing computer hardware and software configurations with improved usability, reliability, productivity and quality.
Modern software products can be increasingly complex, as can the devices that run these products. Software applications are now run on modern devices such as smartphones, tablets, smart watches, portable computers as well as the traditional personal computer (PC). To justify the cost of development, and to meet consumer needs, it is often required to roll out a software application across a range of different devices and operating systems. A program developer often has to take into account different operating systems, communication protocols and system hardware when developing new software. In addition, software is also increasingly distributed. On, for example, smartphones and laptop computers, stand-alone software installed on a single computer is increasingly being replaced by applications (or “apps”) or other client components which communicate with several server components. In turn, these server components may communicate with other servers, increasing the complexity of design. As a result, it is often difficult to ensure that a software product is functional across a complete range of devices and operating systems, and that any errors, flaws, failures, or faults (otherwise known as ‘bugs’) in the software product are identified. Typically, these ‘bugs’ are only discovered when the software is run. The testing of a software product, pre-launch, is therefore important to a software developer.